import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:wuxu_flutter_lianxi/dao/UserDao.dart';
import 'package:wuxu_flutter_lianxi/redux/wx_state.dart';
import 'package:redux/redux.dart';
import 'package:wuxu_flutter_lianxi/route/navigator_util.dart';

class SplashWidget extends StatefulWidget{
  SplashWidget({super.key});

  @override
  State<StatefulWidget> createState() => SplashState();
}

class SplashState extends State<SplashWidget> {
  String text = "";
  double fontSize=76;
  bool hadInit =false;
  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    if(hadInit){
      return;
    }
    hadInit = true;

    //-----初始化

    // StoreProvider继承InheritedWidget，.of就是获取最近的InheritedWidget子类的store数据。
    // 此项目也就是获取的WXApp中创建的WXState
    Store<WXState> store = StoreProvider.of(context);

    //----延时更新欢迎字样

    //Future.delayed 命名构造
    //Duration(seconds: 1,milliseconds: 500) 表示延迟： 1秒+500毫秒
    Future.delayed(const Duration(milliseconds: 500),(){
        setState(() {
          text = "Welcome";
          fontSize = 60;
        });
    });

    Future.delayed(const Duration(seconds: 1,milliseconds:500),(){
      setState(() {
        text = "wuxu_flutter_lianxi";
        fontSize = 30;
      });
    });

    //获取用户信息，根据登录状态跳转对应页面
    Future.delayed(const Duration(seconds: 3),(){
      UserDao.initUserInfo().then((res){// UserDao.initUserInfo()不是Future类，也可以使用.then? 答：async修饰的函数返回值为Future类型
          if(res!=null){
            StoreProvider.of<WXState>(context).state.userInfo=res;
            //已经登录，跳转首页
            NavigatorUtil.goMain(context);
          }else{
            //未登录，跳转登录页
            NavigatorUtil.goLogin(context);
          }
      });
    });
  }


  @override
  Widget build(BuildContext context) {
    return Material(
      color: Colors.white,
      child: Center(
        child: Text(
          text,
          style: TextStyle(
            fontSize: fontSize
          ),
        ),

        //todo:目前有问题，后面再修复吧，需要学习riv怎么制作
        // child: RiveAnimation.asset(
        //     'static/anim/welcome.riv',
        //       // animations: ["state_1"], // 动画播放列表
        //       onInit: (art){ // 初始化成功回调，进行后续控制器的设置
        //         var controller = StateMachineController.fromArtboard(art, "State_Machine");//获取对应状态机的动画控制器，State_Machine是rive制作时设定的状态机名称
        //         var first =controller?.findInput<bool>("first"); // 状态机会有不同的数值
        //         art.addController(controller!);
        //         first?.value = true;//数值设置true 会启动动画
        //       },
        // ),
      ),
    );
  }
}